/*
 * Copyright (C) 31/05/2010 Aderbal Nunes <aderbalnunes@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.boxandroid.myrom;

//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Random;
//
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.media.AudioManager;
//import android.media.SoundPool;
//import android.view.MotionEvent;
//import android.view.SurfaceHolder;
//import android.view.SurfaceView;
//
//public class GameEngine extends SurfaceView implements SurfaceHolder.Callback {
//
//	// thread game
//	private GameThread _thread;
//	// cache graphics
//	private Map<Integer, Bitmap> _cachedImage = new HashMap<Integer, Bitmap>();
//	// graphics
//	private List<Graphics> _graphics = new ArrayList<Graphics>();
//	// context
//	private Context _context;
//	// randon
//	private Random rand;
//	// paint
//	private Paint _paint;
//	// last graphic
//	private Graphics _lastGraphic;
//	// colide this
//	private Graphics _colised;
//	// sound file
//	private SoundPool _sound;
//	// playback file
//	private int _playbackFile = 0;
//
//	// physics
//	private int _apple_count = 0;
//	private int _google_count = 0;
//	private String _textPhysic = "";
//
//	/**
//	 * Construct
//	 * 
//	 * @param context
//	 */
//	public GameEngine(Context context) {
//		super(context);
//		_context = context;
//		fillCachedImages();
//		_paint = new Paint();
//		_paint.setStyle(Paint.Style.FILL);
//		_paint.setColor(Color.BLUE);
//		_thread = new GameThread(this);
//		_sound = new SoundPool(12, AudioManager.STREAM_RING, 100);
//		_playbackFile = _sound.load(getContext(), R.raw.colised, 0);
//		getHolder().addCallback(this);
//		setFocusable(true);
//	}
//
//	private void fillCachedImages() {
//		_cachedImage.put(R.drawable.android, BitmapFactory.decodeResource(
//				_context.getResources(), R.drawable.android));
//		_cachedImage.put(R.drawable.apple, BitmapFactory.decodeResource(
//				_context.getResources(), R.drawable.apple));
//		_cachedImage.put(R.drawable.close_box, BitmapFactory.decodeResource(
//				_context.getResources(), R.drawable.close_box));
//		_cachedImage.put(R.drawable.open_box, BitmapFactory.decodeResource(
//				_context.getResources(), R.drawable.open_box));
//		_cachedImage.put(R.drawable.background, BitmapFactory.decodeResource(
//				_context.getResources(), R.drawable.background));
//	}
//
//	@Override
//	public boolean onTouchEvent(MotionEvent event) {
//		synchronized (getHolder()) {
//			if (event.getAction() == MotionEvent.ACTION_DOWN) {
//				// create icon
//				_lastGraphic = createRandonGraphic((int) event.getX(),
//						(int) event.getY());
//				_graphics.add(_lastGraphic);
//			}
//			_colised = checkColision();
//			if (_colised != null) {
//				if (!_colised.get_type().toLowerCase().equals(
//						_lastGraphic.get_type())) {
//					_graphics.remove(_colised);
//					_sound.play(_playbackFile, 1, 1, 0, 0, 1);
//					updatePhysics();
//				}
//			}
//		}
//		return true;
//	}
//
//	private void updatePhysics() {
//		if (_lastGraphic.get_type().toLowerCase().equals("google"))
//			_google_count++;
//		if (_lastGraphic.get_type().toLowerCase().equals("apple"))
//			_apple_count++;
//	}
//
//	private Graphics createRandonGraphic(int x, int y) {
//		Graphics graphic = new Graphics();
//		rand = new Random();
//		int r = Math.abs(rand.nextInt() % 2);
//		switch (r) {
//		case 0:
//			graphic.set_bitmap(_cachedImage.get(R.drawable.android));
//			graphic.set_type("google");
//			break;
//		case 1:
//			graphic.set_bitmap(_cachedImage.get(R.drawable.apple));
//			graphic.set_type("apple");
//			break;
//		default:
//			throw new RuntimeException("RANDOM not between 0 and 1: " + rand);
//		}
//		graphic.get_cordinates().setX(x);
//		graphic.get_cordinates().setY(y);
//		return graphic;
//	}
//
//	/**
//	 * Draw
//	 */
//	public void onDraw(Canvas canvas) {
//		super.onDraw(canvas);
//		// draw background
//		canvas.drawBitmap(_cachedImage.get(R.drawable.background), 0, 0, null);
//		// draw graphics
//		if (_graphics.size() > 0) {
//			for (Graphics g : _graphics) {
//				canvas.drawBitmap(g.get_bitmap(), g.get_cordinates().getX()
//						- (48 / 2), g.get_cordinates().getY() - (48 / 2), null);
//			}
//		}
//		canvas.drawText(_graphics.size() + " graphics", 4, 12, _paint);
//		_textPhysic = "Google: " + _google_count + " Apple: " + _apple_count;
//		canvas.drawText(_textPhysic, 4, 33, _paint);
//	}
//
//	public Graphics checkColision() {
//		if (_lastGraphic != null && _graphics.size() > 0) {
//			int w = _lastGraphic.get_bitmap().getWidth();
//			int h = _lastGraphic.get_bitmap().getWidth();
//
//			int firstXRangeStart = _lastGraphic.get_cordinates().getX();
//			int firstXRangeEnd = firstXRangeStart + w;
//			int firstYRangeStart = _lastGraphic.get_cordinates().getY();
//			int firstYRangeEnd = firstYRangeStart + h;
//
//			int secondXRangeStart = 0;
//			int secondXRangeEnd = 0;
//			int secondYRangeStart = 0;
//			int secondYRangeEnd = 0;
//
//			for (Graphics gr : _graphics) {
//				secondXRangeStart = gr.get_cordinates().getX();
//				secondXRangeEnd = secondXRangeStart + w;
//				secondYRangeStart = gr.get_cordinates().getY();
//				secondYRangeEnd = secondYRangeStart + h;
//				// test
//				if ((secondXRangeStart >= firstXRangeStart && secondXRangeStart <= firstXRangeEnd)
//						|| (secondXRangeEnd >= firstXRangeStart && secondXRangeEnd <= firstXRangeEnd)) {
//					if ((secondYRangeStart >= firstYRangeStart && secondYRangeStart <= firstYRangeEnd)
//							|| (secondYRangeEnd >= firstYRangeStart && secondYRangeEnd <= firstYRangeEnd)) {
//						return gr;
//					}
//				}
//			}
//		}
//		return null;
//	}
//
//	public GameThread getThread() {
//		return _thread;
//	}
//
//	@Override
//	public void surfaceChanged(SurfaceHolder holder, int format, int width,
//			int height) {
//	}
//
//	@Override
//	public void surfaceCreated(SurfaceHolder holder) {
//		if (!_thread.isAlive()) {
//			_thread = new GameThread(this);
//		}
//		_thread.set_run(true);
//		_thread.doStart();
//	}
//
//	@Override
//	public void surfaceDestroyed(SurfaceHolder holder) {
//		boolean retry = true;
//		_thread.set_run(false);
//		while (retry) {
//			try {
//				_thread.join();
//				retry = false;
//			} catch (InterruptedException e) {
//			}
//		}
//	}
//
//	@Override
//	public void onWindowFocusChanged(boolean hasWindowFocus) {
//		if (!hasWindowFocus)
//			_thread.pause();
//	}
//
//}
